package com.qfmy.common.login;



/**
 * @author 清风明月
 * @Package com.qfmy.common.login
 * @date 2025/11/11
 * @descriptio 基于ThreadLocal实现，确保多线程环境下用户信息的线程隔离
 */
@SuppressWarnings("all")
public class LoginUserHolder {
    /**
     * ThreadLocal变量，用于存储当前线程的登录用户信息
     * ThreadLocal为每个线程提供独立的变量副本，避免多线程间的数据干扰
     */
    public static ThreadLocal<LoginUser> threadLocal = new ThreadLocal<>();

    /**
     * 设置当前线程的登录用户信息
     * @param loginUser 登录用户信息对象
     */
    public static void setLoginUser(LoginUser loginUser) {
        threadLocal.set(loginUser);
    }

    /**
     * 获取当前线程的登录用户信息
     * @return 当前线程的登录用户信息，若未设置则返回null
     */
    public static LoginUser getLoginUser() {
        return threadLocal.get();
    }

    /**
     * 清除当前线程的登录用户信息
     * 注意：在线程池环境下必须调用此方法，避免线程复用导致的信息泄露
     */
    public static void clear() {
        threadLocal.remove();
    }
}